﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RzCorportativo.DataAccess;

namespace RzCorportativo.Lib
{
    public class Uf
    {
        public Uf()
        {
            this.UF = string.Empty;
        }

        public int UfId { get; set; }
        public string UF { get; set; }
        public string Nome { get; set; }
        public string Pais { get; set; }
        public bool IsNew { get { return this.UfId == 0; } }
        //private RzCorportativo.DataAccess.UnidadeFederativa model;

        public bool Salvar()
        {
            return true;
            //bool @result = false;
            //Transaction.Begin((entity) =>
            //{
            //    if (this.IsNew)
            //        this.model = this.Insert(entity);
            //    else
            //        this.model = this.Update(entity);
            //    return true;
            //}).OnError((ex) =>
            //{
            //    @result = false;
            //}).OnSuccess(() =>
            //{
            //    @result = true;
            //    this.UfId = this.model.UfId;
            //});
            //return @result;
        }
        /*
        private RzCorportativo.DataAccess.UnidadeFederativa Insert(RZCorporativoEntities entity)
        {
            var @item = this.CreateModel(entity);
            entity.AddToUnidadeFederativa(@item);
            return @item;
        }

        private RzCorportativo.DataAccess.UnidadeFederativa Update(RZCorporativoEntities entity)
        {
            var @item = this.CreateModel(entity);
            return @item;
        }

        private RzCorportativo.DataAccess.UnidadeFederativa CreateModel(RZCorporativoEntities entity)
        {
            var uf = new RzCorportativo.DataAccess.UnidadeFederativa();
            if (!this.IsNew)
            {
                uf = entity.UnidadeFederativa.Where(w => w.UfId == this.UfId).FirstOrDefault();
                if (uf == null)
                    throw new Exception("Código inválido");
            }

            uf.UfId = this.UfId;
            uf.UF = (this.UF ?? string.Empty).ToUpper();
            uf.Nome = (this.Nome ?? string.Empty).ToUpper();
            uf.Pais = (this.Pais ?? string.Empty).ToUpper();
            return uf;
        }

        internal Uf CreateUf(RzCorportativo.DataAccess.UnidadeFederativa item)
        {
            Uf uf = new Uf();
            uf.UfId = item.UfId;
            uf.UF = item.UF;
            uf.Nome = item.Nome;
            uf.Pais = item.Pais;
            return uf;
        }
        */

        public static List<Lib.Uf> Listar(Lib.Uf uf)
        {
            if (uf == null)
                uf = new Uf();
            List<Uf> ufs = new List<Uf>();
            return ufs;
            //RzCorportativo.DataAccess.RZCorporativoEntities db = new RZCorporativoEntities();
            //ufs = db.UnidadeFederativa.Where(w =>
            //        ((uf.UfId == 0) || (uf.UfId == w.UfId)) &&
            //        ((uf.Nome == null || uf.Nome == "") || (w.Nome.Contains(uf.Nome))) &&
            //        ((uf.UF == null || uf.UF == "") || (uf.UF == w.UF))
            //    ).ToList().Select(s => uf.CreateUf(s)).ToList();
            //return ufs;
        }
    }
}
